package gui.sejour;

import gui.FenetrePrincipale;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import Controleur.ControleurSejour;

import model.Agenda;
import model.Chambre;
import model.LigneReservation;

import java.util.ArrayList;
import java.util.List;

public class FenetreSelectionChambres extends FenetrePrincipale {
	private JButton btnSelectionner,
					btnAnnuler;
	private LigneReservation ligneActu = null;
	private int nbChambre;
	private JList lstChambres;
	private JLabel lblChambresAChoisir;
	private static final String CHAMBRE_DISPO = "Chambres a choisir : ";
	private ActionListener ctrl;
	
	public FenetreSelectionChambres(ActionListener ctrl, LigneReservation ligne) {
		ligneActu = ligne;
		this.ctrl = ctrl;
		afficher(ctrl);
	}

	public void afficher(final ActionListener ctrl) {
		setBounds(0, 0, 550, 299);
		init();
		setTitle("Selection de Chambre");
		getContentPane().setLayout(null);
		
		nbChambre = ligneActu.getQuantite();
		
		JLabel lblCategorieDeChambre = new JLabel("Categorie de chambre reserv\u00E9");
		lblCategorieDeChambre.setBounds(12, 13, 211, 16);
		add(lblCategorieDeChambre);
		
		JLabel lblChambreDisponible = new JLabel("Chambre disponible");
		lblChambreDisponible.setBounds(12, 42, 133, 16);
		add(lblChambreDisponible);
		
		
		JLabel lblcatchambre = new JLabel(ligneActu.getCategorieChambre().getCategorie());
		lblcatchambre.setBounds(235, 13, 169, 16);
		add(lblcatchambre);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 71, 508, 133);
		add(scrollPane);
		
		lstChambres = new JList();
		scrollPane.setViewportView(lstChambres);
		List<Chambre> tempChambres = new ArrayList<Chambre>();
		tempChambres = Agenda.getInstance().chambresDispoDate(ligneActu.getCategorieChambre(), 
																ligneActu.getDateArrive(), 
																ligneActu.getDateDepart());
		lstChambres.setListData(tempChambres.toArray());
		lstChambres.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		lstChambres.addListSelectionListener(new ListSelectionListener(){
			
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
				if (lstChambres.getSelectedIndex() >= 0) {
					ctrl.actionPerformed(new ActionEvent(this, lstChambres.getSelectedIndex(), 
							String.valueOf(ControleurSejour.CHAMBRE_SELECT_LIST)));
				}
			}
		});
		
		lblChambresAChoisir = new JLabel(CHAMBRE_DISPO + nbChambre);
		lblChambresAChoisir.setBounds(235, 42, 169, 16);
		add(lblChambresAChoisir);
		
		JPanel pnlBouton = new JPanel();
		pnlBouton.setBounds(0, 217, 532, 35);
		getContentPane().add(pnlBouton);
		
		btnSelectionner = new JButton("S\u00E9lectionner");
		btnSelectionner.addActionListener (ctrl);
		btnSelectionner.setActionCommand(String.valueOf(ControleurSejour.SELECTIONNER_CHAMBRE));
		btnSelectionner.setEnabled(false);
		pnlBouton.add(btnSelectionner);
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.addActionListener (ctrl);
		btnAnnuler.setActionCommand(String.valueOf(ControleurSejour.ANNULER));
		pnlBouton.add(btnAnnuler);
		
		setVisible(true);
	}
	
	public int getSelectedChambreIndex(){
		return lstChambres.getSelectedIndex();
	}
	
	public void activerSelection(){
		btnSelectionner.setEnabled(true);
	}
	
	public void resetSelectionNBChambre(){
		btnSelectionner.setEnabled(false);
		lblChambresAChoisir.setName(CHAMBRE_DISPO + --nbChambre);
		if (nbChambre == 0){
			ctrl.actionPerformed(new ActionEvent(this, 0, 
					String.valueOf(ControleurSejour.SELECTIONNER_TERMINER)));
		}
	}
	
	public void modificationSejour(){
		nbChambre = 1;
		lblChambresAChoisir.setName(CHAMBRE_DISPO + nbChambre);
	}
}
